import { onMounted, onUnmounted } from 'vue';
import { HospitalWatcher } from '@/utils/channel';

/**
 * 组合式函数：使用医院数据监听器
 * 在 Vue 组件中使用更方便
 * @param callback 医院数据变化时的回调函数
 * @returns 返回控制函数
 */
export function useHospitalWatcher(callback: (hospital: any) => void) {
    onMounted(() => {
        HospitalWatcher.addListener(callback);
    });
    
    onUnmounted(() => {
        HospitalWatcher.removeListener(callback);
    });
    
    return {
        triggerCheck: HospitalWatcher.triggerCheck,
        clearAllListeners: HospitalWatcher.clearAllListeners
    };
}

/**
 * 使用示例：
 * 
 * // 在 Vue 组件中使用
 * import { useHospitalWatcher } from '@/composables/useHospitalWatcher';
 * 
 * const handleHospitalChange = (hospital: any) => {
 *     // 重新更新相关数据
 *     updateLogo();
 *     updateData();
 * };
 * 
 * // 使用组合式函数
 * const { triggerCheck } = useHospitalWatcher(handleHospitalChange);
 * 
 * // 手动触发检查
 * triggerCheck();
 */
